package com.niuke;

import java.util.Scanner;

/**
 * 58. 跳格子2
 * https://www.ngui.cc/article/show-1295837.html?action=onClick
 */
public class NiukeMoni58 {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);
        String[] input = scanner.nextLine().split(" ");

        int res = 0;
        if (input.length == 1) {
            res = Integer.parseInt(input[0]);
        } else {
            int[] dp = new int[input.length + 1];
            // 题目类似打家劫舍，但是数据可以循环，所以记录下最佳答案是否包含第一个数
            boolean[] dp1 = new boolean[input.length + 1];
            dp[0] = 0;
            dp[1] = Integer.parseInt(input[0]);
            dp1[1] = true;
            dp[2] = Integer.parseInt(input[1]);

            for (int i = 2; i < input.length; i++) {
                int curr = Integer.parseInt(input[i]);
                int a = curr + dp[i - 1];
                int b = dp[i];
                if (a > b && dp1[i - 1]) {
                    dp1[i + 1] = true;
                }
                if (b > a && dp1[i]) {
                    dp1[i + 1] = true;
                }
                dp[i + 1] = Math.max(a, b);
            }

            if (dp[input.length] > dp[input.length - 1]) {
                if (dp1[input.length]) {
                    // 如果最佳答案既包含首，也包含尾，那要去除掉首位中小的那个数，再和第二佳的答案比较哪个更大
                    int last = Integer.parseInt(input[input.length - 1]);
                    res = Math.max(dp[input.length] - Math.min(dp[1], last), dp[input.length - 1]);
                } else {
                    res = dp[input.length];
                }
            } else {
                res = dp[input.length - 1];
            }
        }

        System.out.println(res);

    }

}
